/**
 * 
 */
package fr.toussna.managedbean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import fr.toussna.entity.Category;
import fr.toussna.service.impl.AccountServiceImpl;

/**
 * Cette classe représente les backingBean dans le language JSF. Les objets de
 * cette classe sont gérés par le Framework JSF. Elle affiche juste le menu de
 * navigation.
 * 
 * @author My
 * @version 2.0
 * 
 */
public class CategoryManagedBean {

	// **********************************
	// * Attributs *
	// **********************************

	List<SelectItem> categoryList;

	/**
	 * la catégorie sélectionnée.
	 */
	private Category category;

	/**
	 * Utilisé pour afficher le menu du site
	 */
	private List<Category> categories;

	/**
	 * @see AccountServiceImpl
	 */
	/*
	 * @Autowired
	 * 
	 * @Qualifier("accountservice")
	 */
	private AccountServiceImpl accountservice;

	// **********************************
	// * Getters & Setters *
	// **********************************

	/**
	 * @return la catégorie courante
	 */
	public Category getCategory() {

		return category;
	}

	/**
	 * @param accountservice
	 *            the accountservice to set
	 */
	public void setAccountservice(AccountServiceImpl accountservice) {
		this.accountservice = accountservice;
	}

	/**
	 * @param category
	 *            la catégorie a setter
	 */
	public void setCategory(Category category) {
		this.category = category;
	}

	/**
	 * @return les catégories
	 */
	public List<Category> getCategories() {
		categories = accountservice.findAllCategories();
		categoryList = new ArrayList<SelectItem>();
		for (Category str : categories) {
			categoryList.add(new SelectItem(str.getName()));
		}
		return categories;
	}

	/**
	 * @param categories
	 *            les catégories a setter
	 */
	public void setCategories(List<Category> categories) {
		this.categories = categories;
	}

	// **********************************
	// * Private Methodes *
	// **********************************

	/**
	 * @return the categoryList
	 */
	public List<SelectItem> getCategoryList() {
		return categoryList;
	}

	/**
	 * @param categoryList
	 *            the categoryList to set
	 */
	public void setCategoryList(List<SelectItem> categoryList) {
		this.categoryList = categoryList;
	}

	/**
	 * @return the accountservice
	 */
	public AccountServiceImpl getAccountservice() {
		return accountservice;
	}

}
